下方程式碼片段全部都是擷取自 Secure Code Warrior 線上安全程式培訓平台,因為練習互動時的題目多半不會只有單一個檔案,可能涉及多個檔案、資料夾及多處地方修改,因此我的文章主要是針對最主要的區塊做修改及說明,若有不好理解的地方非常抱歉也還請見諒,也可以實際上去 Secure Code Warrior 玩玩看,搭配著互動,會更有感的學習哦~
srand(input.size());
for (unsigned int i = 0; i < ARGON2_SALT_LENGTH; i++) {
salt[i] = rand();
}
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:應使用Argon2Encoder
中隨機生成器生成的亂數種子進行雜湊。原本的程式碼中,使用者輸入對亂數種子有直接影響,這使得生成的隨機值不太安全。
把原區塊改成
CryptoPP::AutoSeededRandomPool prng;
prng.GenerateBlock(salt, ARGON2_SALT_LENGTH);
//程式碼片段擷取自 Secure Code Warrior 線上安全程式培訓平台
解釋:
由經過良好測試且安全的CryptoPP庫生成隨機字元。